The embodiments described within this disclosure relate generally to optimizing traffic paths between networks, and more particularly, to creating a transitive-optimized flow path between Coupled Promiscuity Networks.
A network can be defined as a collection of computers and devices that are connected to each other. Such a network allows users and computers to communicate with each other and share resources and information. However, this classic definition of network is not sufficiently broad to capture the wide intuitive concept, which people today consider as a “network”. Many different networks can be defined on connected computers, in any abstraction layer of the Open System Interconnection (OSI) reference model.
For example, in the data link abstraction layer, some computers may be connected directly to each other and belong to the same Local Area Network (LAN), while a pair of devices with indirect connection can construct a network using a Point-to-Point Protocol (PPP) connection between them. As another example, in the application abstraction layer, users of sets of computers and devices might be connected to a particular social network via a particular web page. Another example is an Internet Protocol (IP) address that can represent a server cluster and can describe a specific network in the network abstraction layer.
In networks, data is typically exchanged between communicating nodes in the form of data chunks. Each data chunk comprises a header and a payload. In an Ethernet network, a data chunk is referred as a frame. A frame is a digital data transmission unit having a header and a payload on the data link layer 2. The header can include information about the communicating devices and may include, but is not limited to: the source MAC address (SA) and the destination MAC address (DA) in an Ethernet protocol frame; the information on the specific connection defined between these two communicating devices Data Link Connection Identifier in the Frame Relay (FR) protocol, and so on. The payload can include the data carried by the frame and can carry a wide variety of information. In an Internet Protocol network, a data chunk is referred as a packet. In an ATM network, a data chunk is referred as a cell. Thus, within the context of this description, the terms: data chunk, frame, packet and cell can be used interchangeably to refer to similar, underlying data formats that include a header and a payload. Henceforth, in context of this description, drawings and claims, the term frame may be used as a representative term for data chunk.
A flow is a sequence of frames associated with a single logical connection between communicating devices. A flow can be defined by a one-to-one relationship between two communicating devices (uni-cast) or by a one-to-many relationship between two or more communicating devices (multi-cast and broadcast). A flow can be identified for each data frame based on the various headers-fields-combinations. The headers-fields-combination can be formed by selecting all fields, or a specific field within the headers of the multiple layers protocols. For example, a flow can be identified using a source MAC address field and a destination MAC address field in the header of a layer 2 Ethernet protocol together with a source port field and a destination port field of a layer 4 TCP header. Another example of a flow can be associated with a specific TCP connection. In this case, the flow frames can be identified using the quartet fields: a source IP address, a destination IP address, a source port and a destination port, for example.
A session is a series of communications in an application layer, initiated by a user or a device. A point-to-point protocol (PPP) session can be initiated when a user logs into a network with a user-id and a password, for example. Another example can be a Dynamic Host Configuration Protocol (DHCP) session, which can be initiated when a user device obtains an IP address from a network. A user may initiate multiple sessions on the same device. For example, a user may be using a computer that is downloading a Video on Demand movie in a first session and the user may also be browsing the World Wide Web (WWW) in a second session. Note that a session can be comprised of one or more flows depending on the application. An HTTP browsing session to a particular web page can be comprised of multiple TCP connections downloading the page objects, for example.
The task of identifying a complete set of flows associated with a specific session is complicated as can be understood from the above described example of an HTTP browsing session. A web page can consist of multiple objects in multiple domains. A browser application might open several Transmission Control Protocol (TCP) connections to download the objects associated with a requested web page. Because each domain might have a different IP address, it is impossible to associate these TCP flows with the same hypertext transfer protocol (HTTP) session without analyzing the origin of the HTML objects and/or performing a Deep Packet Inspection (DPI) operation on the HTTP referrer headers. Henceforth throughout this disclosure the term “session” will be used with respect to a set of flows that have a simple logical connection in an application layer. For example, this may consist of two flows that produce a bi-directional TCP connection. Note that this flow set might not include all flows associated with a particular session.
Various devices exist for transmitting frames within a network or between networks. These devices may operate at one or more OSI model layers, including the physical, data link, network, or transport layers, for example. A switch, a bridge and a gateway are examples of hardware devices providing physical connections within or between different networks and that operate at the data link layer. Routers usually route frames using higher protocol information, to determine the ultimate destination of the frame and to determine an optimum path from the source network to the destination network, for example.
Classic routing algorithms, such as those used by a Border Gateway Protocol (BGP), for example, are designed to optimize the routing path between source and destination addresses, in the Internet, for example. FIG. 1A illustrates the prior art public network topology 100 that is assumed to be in place for such routing algorithms. As can be seen from this FIG. 1A, the public network 100 can be comprised of multiple networks separated by long distances, measured in the number of hops, between a plurality of users 101,103,105 and server 110. An exemplary long routing path between user “A” 101 and the server 110, can be through a plurality of routers: 120, 121, 123, 125, 127 and 129 and switch 130.
Today, with the existence of large Content Networks 150 (FIG. 1B, a prior art network), the above described topology 100 has changed. The content networks are huge and highly connected to other networks, resulting in a flatter topology 140 as illustrated in FIG. 1B, for example. In the typical prior art flat topology 140, the distance between a plurality of users 102,104,106 and their requested content on servers 122,124 is shortened.
In the prior art, a Session Border Controller (SBC) is a device used in some Voice over IP (VoIP) networks to exert control over the signaling and the media flows involved in setting up, conducting, and tearing down calls. The fact that most of the signaling and media packets pass through the SBC allows the SBC to provide a number of services, including, but not limited to: measurement, access control, routing of media packets and signaling packets based on present rules and policies, protocol conversion and codec trans-coding, firewall and network address translator (NAT) traversal, quality of service (QoS) enforcement, and topology hiding. These functions can be implemented by one or more application servers running on the SBC.
In common communication networks it is possible to change a path of a flow to a different network and/or to a different OSI layer. In such communication networks, the flow is encapsulated and additional headers are added to it thereby increasing the overhead of the data packets of the flow. A few non-limiting examples of communication networks that use this technique/protocol include: MPLS, GMPLS, etc. When a GMPLS and/or MPLS network decides to change a path of a flow, among other actions, GMPLS and/or MPLS encapsulates the flow by adding a header with forwarding information (referred to as a label). This operation results in increasing the overhead of the data packets of the flow.
Communication networks that add additional headers are fast but not sophisticated networks. Flows can accumulate many headers across the path that it needs to be transferred through. For example, a common situation can be one in which a flow is transferred over Voice IP, over the Internet, over switching, over IP over the Internet, and so on. Adding more headers (encapsulation of the data traffic) increases the bandwidth consumption of the flow.
Furthermore existing communication networks that calculate an optimized path and modify the flow accordingly can require edge devices at the edges of the flow path. The edge devices are needed for encapsulating and\or de-encapsulation and adding additional headers with forwarding information in order to divert the flow to a new path according to the optimization plane. In GMPLS and MPLS, the edge devices can be routers, referred as label edge routers (LER), for example. Common communication networks may also require a link management system and or method because they create a new network on top of existing networks, creating more complexity and so on. Therefore there is a need for an elegant, sophisticated, and uncomplicated method and system that will enable creating an optimized path for a flow with minimal or no overhead.